package com.lbb.springboot.util;

import java.util.ArrayList;
import java.util.List;

/**
 * 封装分页信息
 * 
 * @author Administrator
 * 
 */
public class PageModel {
	
	private PageContent prev;

	// 结果集
	private List<PageContent> list;
	
	private PageContent next;

	// 查询记录数
	private int totalRecords;

	// 每页多少条数据
	private int pageSize = 10;

	// 第几页
	private int pageNo;
	
	String pre;
	String end;
	
	public String getHtml(){
		StringBuffer sb=new StringBuffer();
		
//		sb.append("<div  style='float:left;'>              ");
////		sb.append("    ");
//		sb.append("<select class='form-control' style='width:100px;margin-top: 22px;'  id='pageSize' onchange='change()'  >         ");
//		sb.append("	<option  checked='checked' >10</option>                   ");
//		sb.append("	<option>50</option>                   ");
//		sb.append("	<option>100</option>                   ");
//		sb.append("	<option>200</option>                   ");
//		sb.append("</select>                             ");
//		sb.append("</div>                          		 ");
//			
		
		sb.append("<ul class='pagination'>");
		if(!CheckUtil.isNull(pre)){
			sb.append("<li><span>").append(pre).append("</span></li>");
		}
		sb.append("<li><a href='javascript:;' onclick=reqrefresh('"+prev.href+"')  target='_self' >&laquo;</a></li>");
		for(int i=0;i<list.size();i++){
			if(pageNo==list.get(i).getNo()){
			    sb.append("<li  class='active' ><a href='javascript:;' onclick=reqrefresh('"+list.get(i).getHref()+"') target='_self' >"+list.get(i).getNo()+"</a></li>");	
			}else{
				sb.append("<li><a href='javascript:;' target='_self' onclick=reqrefresh('"+list.get(i).getHref()+"') >"+list.get(i).getNo()+"</a></li>");
			}
		}
		sb.append("<li><a href='javascript:;' onclick=reqrefresh('"+next.href+"') target='_self' >&raquo;</a></li>");
		//sb.append("<li><select name='pagesize' id='pagesize' class='btn btn-default'><option value='10'>10</option><option value='20'>20</option><option value='50'>50</option></select></li>");
		sb.append("<li><span>").append("总记录："+totalRecords).append("</span></li>");
		if(!CheckUtil.isNull(end)){
			sb.append("<li><span>").append(end).append("</span></li>");
		}
		sb.append("</ul>");
		return sb.toString();
	}
	
	
	public String getPreHtml(String pre){
		this.pre=pre;
		return getHtml();
	}
	
	public String getEndHtml(String end){
		this.end=end;
		return getHtml();
	}
	
	public PageModel() {
	}
	
	
	public PageModel(int totalRecords, int pageSize, int pageNo) {
		setTotalRecords(totalRecords);
		setPageSize(pageSize);
		setPageNo(pageNo);
	}
	
	

	public PageModel(int totalRecords, int pageSize, int pageNo, String url) {
		setTotalRecords(totalRecords);
		setPageSize(pageSize);
		setPageNo(pageNo);
		setUrl(url);
	}
	
	
	public void setPage(int totalRecords, int pageSize, int pageNo){
		setTotalRecords(totalRecords);
		setPageSize(pageSize);
		setPageNo(pageNo);
	}
	public void setUrl(String url){
		list = new ArrayList<PageContent>();
		int pi = 10;
		int startPage = 1;
		int endPage=1;
		int totalpage = getTotalPages();
		if (pageNo > pi) {
			startPage = pageNo - 10;
		}
		if(pageNo+pi > totalpage){
			endPage=totalpage;
		}else{
			endPage=pageNo+pi;
		}
		prev=new PageContent(0, url, startPage>1?startPage:1);
		next=new PageContent(0, url, endPage+1>=totalpage?totalpage:endPage);
		
		for (int i = startPage; i < pageNo; i++) {
			PageContent pc = new PageContent(0, url, i);
			list.add(pc);
		}

		list.add(new PageContent(1, url, pageNo));

		for (int i = pageNo + 1; i <= endPage; i++) {
			PageContent pc = new PageContent(0, url, i);
			list.add(pc);
		}
		
	}
	

	/**
	 * 总页数
	 * 
	 * @return
	 */
	public int getTotalPages() {
		return (totalRecords + pageSize - 1) / pageSize;
	}

	/**
	 * 取得首页
	 * 
	 * @return
	 */
	public int getTopPageNo() {
		return 1;
	}

	/**
	 * 上一页
	 * 
	 * @return
	 */
	public int getPreviousPageNo() {
		if (pageNo <= 1) {
			return 1;
		}
		return pageNo - 1;
	}

	/**
	 * 下一页
	 * 
	 * @return
	 */
	public int getNextPageNo() {
		if (pageNo >= getBottomPageNo()) {
			return getBottomPageNo();
		}
		return pageNo + 1;
	}

	/**
	 * 取得尾页
	 * 
	 * @return
	 */
	public int getBottomPageNo() {
		return getTotalPages();
	}

	public List<PageContent> getList() {
		return list;
	}

	public void setList(List<PageContent> list) {
		this.list = list;
	}

	public int getTotalRecords() {
		return totalRecords;
	}

	public void setTotalRecords(int totalRecords) {
		this.totalRecords = totalRecords;
	}

	public int getPageSize() {
		return pageSize;
	}

	public void setPageSize(int pageSize) {
		this.pageSize = pageSize;
	}

	public int getPageNo() {
		return pageNo;
	}

	public void setPageNo(int pageNo) {
		this.pageNo = pageNo;
	}
	
	
	public PageContent getPrev() {
		return prev;
	}

	public void setPrev(PageContent prev) {
		this.prev = prev;
	}

	public PageContent getNext() {
		return next;
	}

	public void setNext(PageContent next) {
		this.next = next;
	}

	public class PageContent {
		private int no=1;
		private int state = 0;// -1=不可用；0=可用；1=选中
		private String href = "";

		public PageContent(int state, String href, int page) {
			this.no=page;
			this.state = state;
			this.href = href + "?page=" + page;
		}

		public int getState() {
			return state;
		}

		public void setState(int state) {
			this.state = state;
		}

		public String getHref() {
			return href;
		}

		public void setHref(String href) {
			this.href = href;
		}

		public int getNo() {
			return no;
		}

		public void setNo(int no) {
			this.no = no;
		}
		

	}

}